package com.zhang.zxx.boot.entity.DO;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhang.zxx.boot.trans.DbTrans;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 * 用户表: 控制层接口管理
 *
 * @author zhangxiaoxiang
 * @date 2021-11-21
 */
@Data
// @SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("sys_user_info")
@ApiModel(value = "SysUserInfo对象", description = "用户表")
public class SysUserInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户id
     */
    @ApiModelProperty("用户id")
    private String id;

    /**
     * 部门id
     */
    @ApiModelProperty("部门id")

    private String deptId;

    @TableField(exist = false)
    @DbTrans(trans = "deptId", key ="name",entity= SysDept.class)
    // @DbTrans(trans = "deptId", key ="ancestors",entity= SysDept.class)
    // 下面这种有点问题,暂时没有成功的
    // @Trans(trans = "deptId", key ="name",using = DeptTransRepository.class)
    private String deptName;

    /**
     * 用户名
     */
    @ApiModelProperty("用户名")
    private String username;

    /**
     * 密码
     */
    @ApiModelProperty("密码")
    private String password;

    /**
     * 用户昵称
     */
    @ApiModelProperty("用户昵称")
    private String nickName;

    /**
     * 用户类型（0、管理员；1、普通用户）
     */
    @ApiModelProperty("用户类型（0、管理员；1、普通用户）")
    private String userType;

    /**
     * 用户邮箱
     */
    @ApiModelProperty("用户邮箱")
    private String email;

    /**
     * 手机号码
     */
    @ApiModelProperty("手机号码")
    private String phoneNumber;

    /**
     * 性别（0、男；1、女）
     */
    @ApiModelProperty("性别（0、男；1、女）")
    private String sex;

    /**
     * 头像
     */
    @ApiModelProperty("头像")
    private String avatarPath;

    /**
     * 帐号状态（0、正常；1、禁用）
     */
    @ApiModelProperty("帐号状态（0、正常；1、禁用）")
    private String userStatus;

    /**
     * 创建者
     */
    @ApiModelProperty("创建者")
    private String createBy;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createDate;

    /**
     * 更新者
     */
    @ApiModelProperty("更新者")
    private String updateBy;

    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateDate;

    /**
     * 删除标识
     */
    @ApiModelProperty("删除标识")
    private String delFlag;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String remark;

    //----------------以下非数据库字段------------------------
    /**
     * 部门名称
     */
    // @TableField(exist = false)
    // @ApiModelProperty("部门名称[非数据库字段]")
    // private String deptName;


}
